A virtual application is an application that runs on a virtualized infrastructure. Virtual applications are typically implemented using a group of one or more virtual machines (VMs) deployed in a cloud environment that work together to perform certain high-level functions. The telecommunications industry uses the term Virtualized Network Functions, or VNFs, to refer to virtual applications that perform network functions.
Several virtual applications can be deployed in a cloud environment. Typically, each virtual application needs to be individually configured and monitored to ensure that the virtual application functions as intended. The data needed for configuring and monitoring each virtual application is typically collected manually. Also, the configuration and monitoring (e.g., health verification) of virtual applications are typically performed by one or more external centralized computer programs that send commands to the virtual applications via predefined interfaces.
There are several ways to configure a virtual application for deployment. These involve, for example, the use of platform scripts (e.g., bash), system interfaces (e.g., Representational State Transfer (REST) and Simple Object Access Protocol (SOAP)), and communication protocols (e.g., Secure Shell (SSH) and Hypertext Transfer Protocol (HTTP)). Many modern enterprise virtual applications are not designed to access shared cloud resources and typically allocate dedicated resources, such as networks. These networks are often private and not easily accessible from the cloud environment without customized, and often times manual, processes. A compatible platform script or computer program can be used to configure and monitor a virtual application, but this requires configuring network connectivity and access permissions (e.g., username/password and/or security certificate) to allow the platform script or computer program to access the virtual application. In a highly complex and secure enterprise cloud environment, a human operator must manually configure the network connectivity and access permissions prior to running the platform script or computer program.
Disadvantageously, the involvement of a human operator introduces a high risk of error and prolongs the amount of time it takes to configure and monitor the virtual application. This is because the human operator needs to be aware of and take into consideration dependencies among virtual applications, the environment in which the virtual application is to be deployed, the different requirements for each vendor and application type, and the different configuration and monitoring settings for each virtual application.